using System;

namespace WMSSystem.JWT
{
    /// <summary>
    /// JWT配置设置类
    /// 用于存储JWT相关的配置信息，如密钥、发行者、受众等
    /// </summary>
    public class JwtSettings
    {
        /// <summary>
        /// JWT密钥 - 用于签名和验证令牌
        /// 在生产环境中应该使用更复杂的密钥并妥善保管
        /// </summary>
        public string SecretKey { get; set; } = "WMSSystem_JWT_Secret_Key_2024_For_Production_Use";

        /// <summary>
        /// 发行者 - 标识谁发行了这个令牌
        /// </summary>
        public string Issuer { get; set; } = "WMSSystem";

        /// <summary>
        /// 受众 - 标识令牌的目标接收者
        /// </summary>
        public string Audience { get; set; } = "WMSSystem_Users";

        /// <summary>
        /// 访问令牌过期时间（分钟）
        /// 默认24小时 = 1440分钟
        /// </summary>
        public int ExpirationMinutes { get; set; } = 1440;

        /// <summary>
        /// 刷新令牌过期时间（天）
        /// 默认7天
        /// </summary>
        public int RefreshTokenExpirationDays { get; set; } = 7;

        /// <summary>
        /// 是否验证发行者
        /// </summary>
        public bool ValidateIssuer { get; set; } = true;

        /// <summary>
        /// 是否验证受众
        /// </summary>
        public bool ValidateAudience { get; set; } = true;

        /// <summary>
        /// 是否验证生命周期
        /// </summary>
        public bool ValidateLifetime { get; set; } = true;

        /// <summary>
        /// 时钟偏移量（秒）
        /// 用于处理服务器时间差异
        /// </summary>
        public int ClockSkewSeconds { get; set; } = 0;
    }
} 